By changing this line iov
--> __iov
in the 2017 driver (Xilinx Answer 65444), I was able to get it to compile on ALMA9
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) static ssize_t sg_read_iter (struct kiocb *iocb, struct iov_iter *from) { dbg_sg("%s()\n", __func__); return sg_aio_read_write(iocb, from->__iov, from->nr_segs, iocb->ki_pos, 0); } static ssize_t sg_write_iter (struct kiocb *iocb, struct iov_iter *iter) { dbg_sg("%s()\n", __func__); return sg_aio_read_write(iocb, iter->__iov, iter->nr_segs, iocb->ki_pos, 1); }
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)
static ssize_t sg_read_iter (struct kiocb *iocb, struct iov_iter *from)
{
dbg_sg("%s()\n", __func__);
return sg_aio_read_write(iocb, from->__iov, from->nr_segs,
iocb->ki_pos, 0);
}
static ssize_t sg_write_iter (struct kiocb *iocb, struct iov_iter *iter)
{
dbg_sg("%s()\n", __func__);
return sg_aio_read_write(iocb, iter->__iov, iter->nr_segs,
iocb->ki_pos, 1);
}
This restored the rates I was seeing using this driver on CentOS7, even when using my C++ library:
I was also able to get about a 20% rate boost when using 2 channnels in midas (from ~1GB/s --> 1.2GB/s)